﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;

namespace SuperX.Common
{
    // 
    public interface IProjService : IBasicObject, IJsonSerialize, INotifyPropertyChanged, IDisposable, ICloneable
    {
        // 
        event EventHandler<ExceptionArgs> Error;

        // 
        string Version { get; }

        // 
        IProject Project { get; }

        // 
        ServiceRunMode RunMode { get; }

        // 
        IProject CreateProjectByTemplate(string projectName, string description, string projectPath, string template);

        //
        IProject CreateProject(string projectName, string description, string projectPath, string plugIns);

        // 
        IProject LoadProject(string projectPath);

        // 
        void CloseProject();

        // 
        void SaveProject();

        // 
        void NotifyError(Exception error, bool isExitProject = false);

        // 
        void NotifyExit();
    }
}
